#!/usr/bin/python
# -*- coding: UTF-8 -*-

import sys
import hashlib
import requests
import json


def str_md5(string):
    """
    计算字符串的md5值
    """
    return hashlib.md5(string.encode('utf8')).hexdigest()


def generate_data():
    """
    生成请求体
    """
    pswd = "_oyeDXNEfbFvlZ5WnPlM"
    data = {
        "q": sys.argv[1],
        "from": "auto",
        "to": sys.argv[2] if len(sys.argv) >= 3 else "en",
        "appid": "20230124001538345",
        "salt": "1435660288",
        "sign": "",
    }
    s = data['appid']+data['q']+data['salt']+pswd
    data['sign'] = str_md5(s)
    return data


def translate(data):
    """
    请求并返回结果
    """
    return requests.post(
        url='https://fanyi-api.baidu.com/api/trans/vip/translate',
        headers={"Content-Type": "application/x-www-form-urlencoded"},
        data=data
    )


if __name__ == "__main__":
    # 打印提示信息
    if len(sys.argv) < 2:
        print('Usage t <src> [dst_lang:en]')
        print('''dst_lang:
            中文	zh	
            英语	en
            粤语	yue	
            文言文	wyw	
            日语	jp
            韩语	kor	
            法语	fra	
            西班牙语	spa
            泰语	th	
            阿拉伯语	ara	
            俄语	ru
            葡萄牙语	pt	
            德语	de	
            意大利语	it
            希腊语	el	
            荷兰语	nl	
            波兰语	pl
            保加利亚语	bul	
            爱沙尼亚语	est	
            丹麦语	dan
            芬兰语	fin	
            捷克语	cs	
            罗马尼亚语	rom
            斯洛文尼亚语	slo	
            瑞典语	swe	
            匈牙利语	hu
            繁体中文	cht	
            越南语	vie''')
    else:
        data = generate_data()

        resp = translate(data).text

        t = json.loads(resp)

        # 打印结果
        print(f"""[{t['from']}] -> [{t['to']}]

        {t["trans_result"][0]['src']} 
        {t["trans_result"][0]['dst']}
        """)
